// MongoDB 初始化脚本

// 切换到应用数据库
db = db.getSiblingDB('jmtemp_db');

// 创建应用用户
db.createUser({
  user: 'app_user',
  pwd: 'app_password',
  roles: [
    {
      role: 'readWrite',
      db: 'jmtemp_db'
    }
  ]
});

// 创建集合和索引
db.createCollection('users');
db.createCollection('orders');
db.createCollection('sessions');

// 创建用户集合索引
db.users.createIndex({ "email": 1 }, { unique: true });
db.users.createIndex({ "username": 1 }, { unique: true });
db.users.createIndex({ "status": 1 });
db.users.createIndex({ "role": 1 });
db.users.createIndex({ "createdAt": -1 });

// 创建订单集合索引
db.orders.createIndex({ "userId": 1 });
db.orders.createIndex({ "orderNumber": 1 }, { unique: true });
db.orders.createIndex({ "status": 1 });
db.orders.createIndex({ "createdAt": -1 });

// 创建会话集合索引
db.sessions.createIndex({ "userId": 1 });
db.sessions.createIndex({ "token": 1 }, { unique: true });
db.sessions.createIndex({ "expiresAt": 1 }, { expireAfterSeconds: 0 });

// 插入示例数据
db.users.insertMany([
  {
    username: "admin",
    email: "admin@example.com",
    password: "$2b$10$K5zJv5F5J5J5J5J5J5J5JOq", // 需要实际加密
    firstName: "System",
    lastName: "Administrator",
    role: "admin",
    status: "active",
    emailVerified: true,
    createdAt: new Date(),
    updatedAt: new Date()
  }
]);

print("MongoDB 初始化完成");

// 切换到开发数据库并创建相同结构
db = db.getSiblingDB('jmtemp_dev_db');

db.createUser({
  user: 'app_user',
  pwd: 'app_password',
  roles: [
    {
      role: 'readWrite',
      db: 'jmtemp_dev_db'
    }
  ]
});

// 创建集合
db.createCollection('users');
db.createCollection('orders');
db.createCollection('sessions');

print("开发数据库初始化完成");

// 切换到测试数据库并创建相同结构
db = db.getSiblingDB('jmtemp_test_db');

db.createUser({
  user: 'app_user',
  pwd: 'app_password',
  roles: [
    {
      role: 'readWrite',
      db: 'jmtemp_test_db'
    }
  ]
});

// 创建集合
db.createCollection('users');
db.createCollection('orders');
db.createCollection('sessions');

print("测试数据库初始化完成");